DOS(1) | Emulacja MS-DOS-u | DOS(1) |
NAZWA¶
dos, xdos, dosexec, dosdebug - uruchamianie MS-DOS-u i programów DOS-owych w Linuksie
SKŁADNIA¶
dos [ -ABCcdkVNXtsgKm234OU ] [ -h poziom ] [ -F plik ] [ -f plik ] [ -L plik_dexe ] [ -u zmienna ] [ -D opcje ] [ -M rozmiar ] [ -e rozmiar ] [ -x rozmiar ] [ -P plik ] [ -o plik ] [ 2> plik_diagnostyczny ] [ -I opcje_konfiguracyjne ] [ -U potok_wejsciowy[:potok_wyjsciowy] ]
dosexec [ -ABCcdkVNXtsgKm234OU ] [ -h poziom ] [ -H opcje_diagnostyczne ] [ -F plik ] [ -u zmienna ] [ -D opcje ] [ -M rozmiar ] [ -e rozmiar ] [ -x rozmiar ] [ -P plik ] [ -o plik ] [ 2> plik_diagnostyczny ] [ -I opcje_konfiguracyjne ] plik_dexe [ -U potok_wejsciowy[:potok_wyjsciowy] ]
dosdebug
xdos [ -ABCbdNtsK234O ] [ -h poziom ] [ -H opcje_diagnostyczne ] [ -F plik ] [ -f plik ] [ -L plik_dexe ] [ -u zmienna ] [ -D opcje ] [ -M rozmiar ] [ -e rozmiar ] [ -x rozmiar ] [ -P plik ] [ -o plik ] [ 2> plik_diagnostyczny ] [ -U potok_wejsciowy[:potok_wyjsciowy] ]
OPIS¶
dos uruchamia emulator DOS-u, znany również
jako DOSEMU.
plik_diagnostyczny jest opcjonalnie podawanym plikiem, do
którego będą kierowane wszelkie komunikaty
diagnostyczne.
dosdebug służy do sterowania i odpluskwiania właśnie działającego DOSEMU.
xdos uruchamia DOSEMU w oddzielnym okienku X. Jest to równoważne poleceniu dos -X
dosexec uruchamia DOSEMU i wykonuje plik DEXE. Jest to równoważne poleceniu dos -L
Chociaż ten program znany jest jako emulator DOS-u, jest on w rzeczywistości wirtualną maszyną dla MS-DOS-u, która pozwala DOS-owi i programom dla niego napisanym działać w środowisku przypominającym komputer IBM PC/AT z procesorem Intel 80x86 w trybie rzeczywistym. DOSEMU emuluje takie usługi, jak obsługa karty graficznej przez BIOS, dyski, klawiatura, port szeregowy i równoległy (drukarka), pamięć CMOS zawierająca informacje o konfiguracji komputera, zegar czasu rzeczywistego, alokacja pamięci przez standard XMS 3.0, EMS 4.0 oraz DPMI 0.9.
Ponieważ w rzeczywistości DOSEMU nie jest emulatorem DOS-u, do pracy wymagana jest kopia systemu MS-DOS 3.3-7.00. (Przyszłe wersje DOS-u przypuszczalnie będą działać, choć oczywiście nie zostało to sprawdzone. DR-DOS 6.0 również współpracuje z tym programem).
Przeczytaj pliki QuickStart, ChangeLog, doc/announce, oraz Makefile zawarte w dystrybucji źródeł, aby dowiedzieć się, jak skonfigurować, skompilować i uruchomić DOSEMU.
WYMAGANIA W STOSUNKU DO KERNELA¶
Obecnie wymagany jest Linux w wersji 2.0.28 lub wyższej z wkompilowaną obsługą SYSV IPC (System V InterProcess Communication - komunikacja między procesami zgodna z Systemem V, przeczytaj ipc(2)). SYSV IPC jest opcją, którą można ustawić podczas kompilacji jądra.
Poczynając od wersji dosemu 0.64.3 domyślną wersją jest kompletna dystrybucja dosemu. Szczegóły znajdują sie w pliku doc/README.vm86plus. Aby skompilować niepełną wersję powinieneś uruchomić configure z opcją --enable-novm86plus.
Jeżeli używasz jądra w wersji 1.2.13 postaraj się o ostatnią stabilną wersję. Podczas pisania tego opisu dostępną wersją był Linux 2.0.28 dostępny przez anonimowe ftp z ftp.funet.fi w katalogu /pub/Linux/kernel/linux/v2.0/ oraz w wielu mirrorach na całym świecie.
OPCJE¶
- -A
- uruchomienie z dyskietki A (nie musi to być prawdziwa stacja dysków - patrz niżej)
- -B
- uruchomienie z dyskietki B (nie musi to być prawdziwa stacja dysków - patrz niżej)
- -C
- uruchomienie z dysku twardego C (nie musi to być prawdziwy napęd ani nawet system plików typu msdos - patrz niżej)
- -c
- użycie bezpośredniego zapisu do pamięci konsoli (program musi być uruchomiony na konsoli z ustawionym bitem suid na roota)
- -d
- odłączenie od bieżącej konsoli wirtualnej lub tty i przyłączenie do pierwszej dostępnej konsoli wirtualnej
- -V
- użycie optymalizacji wideo charakterystycznej dla VGA
- -k
- użycie bezpośredniego odczytu klawiatury (program musi być uruchomiony na konsoli)
- -F
- Pobieranie opcji z podanego pliku konfiguracyjnego zamiast z /etc/dosemu.conf (trzeba mieć uprawnienia roota lub program musi mieć ustawiony bit suid na roota)
- -f
- Pobieranie opcji z podanego pliku konfiguracyjnego zamiast z .doserc
- -u zmienna
- ustawia zmienną konfiguracyjną dla użytjkownika, której istnienie może być sprawdzone w plikach /etc/dosemu.conf i /var/lib/dosemu/global.conf w celu uzykania specyficznej konfiguracji. Do podanej nazwy zmiennej zostanie dodany przyrostek u_, aby uniknąć konfliktu nazw.
- -L
- Ładuje i uruchomia plik DEXE (specjalny obraz dysku sytemowego zawierający tylko jeden program DOS-owy)
- -I
- analizuje ciąg opcji wystepujący po -I mający tę samą składnię, co pliki /etc/dosemu.conf i .dosrc, np.
- dos ... -I 'video { mda }'
-
Ta opcja jest przydatna do tymczasowej zmiany ustawienia jakiejś opcji konfiguracyjnej. Możesz również uruchamiać dosemu z własną konfiguracją za pomocą skryptu, np.
- dos ... -I "`mojakonfiguracja.sh`"
-
gdzie mojakonfiguracja.sh jest skryptem wypisującym opcje konfiguracyjne na standardowe wyjście. Jeżeli użytkownik oprócz .dosrc posiada jeszcze inny plik konfiguracyjny, może go użyć w następujący sposób:
- dos ... -I "`cat innakonfiguracja.conf`"
-
Należy pamiętać o dodatkowym ujęciu parametru po -I w cudzysłowy, ponieważ ma to być pojedynczy argument.
- -D
- określa, jakie komunikaty diagnostyczne mają się pojawiać/nie pojawiać
- -h
- wypisuje konfigurację na stderr (standardową diagnostykę) i kończy pracę (ustawia -D+c). Ta opcja jest przydatna do odpluskwiania plików konfiguracyjnych. Zalecane jest użycie również -O, aby przekierować komunikaty typu +c na stderr. `poziom' może wynisić 0, 1 lub 2 i steruje ilością informacji uruchomieniowych wypisywanych przez analizatora konfiguracji: brak informacji uruchomieniowych (0), informacje uruchomieniowe o pętlach (1), informacje uruchomieniowe dla if_else_endif (2).
- -H
- podanie opcji obsługi dosdebug, aktualnie obsługiwana jest jedynie `1'. Za pomocą -H1 można zmusić dosemu do czakania aż terminal programu terminal zostanie podłączony. Aby analizować sesję DOS-ową od samego początku, należy najpierw uruchomić dosemu z opcją -H1, a następnie uruchomić dosdebug. Wówczas, DOSEMU zatrzyma się przed skokiem do załadowanego sektora startowego oczekując na podłączenie się dosdebuga. Po podłączeniu znajdzie się on w stanie `stopped', co umożliwi ustawienie pułapek lub wykonywanie krok po kroku dla kodu inicjującego.
- -O
- wysyłanie komunikatów diagnostycznych na standardową diagnostykę
- -o
- wysyłanie komunikatów diagnostycznych do podanego pliku
- -M
- ustawienie pamięci podstawowej na rozmiar kilobajtów
- -m
- włączenie wewnętrznej obsługi myszy
- -P
- wysyłanie kopii komunikatów diagnostycznych również do podanego pliku
- -2,3,4
- wybiranie emulowanego procesora: 286, 386 lub 486 (OSTROŻNIE: DOSEMU jest nie w pełni działa 32-bitowe, więc jeżeli program wykrywając procesor 386 lub 486 używa 32-bitowych rejestrów i funkcji BIOS-u, to może działać niewłaściwie. Jeżeli wydaje się, że to właśnie jest przyczyną problemów, należy użyć opcji -2 by wymusić na DOSEMU tryb 286)
- -U
- definiuje potoki: wejściowy i wyjściowy dla asynchronicznego sterowania DOSEMU z innego procesu. Format ma postać (bez białych znaków pomiędzy)
- potok_wejsciowy:potok_wyjsciowy
-
gdzie `:potok_wyjsciowy' można pominąć. Jednak w tym przypadku żadnego sprzężenia zwrotnego ze strony DOSEMU nie należy oczekiwać.
Ze względów bezpieczeństwa DOSEMU nie tworzy samodzielnie nazwanych potoków, więc za nadanie prawidłowych uprawnień potokom odpowiedzialny jest użytkownik. Należy zwrócić uwagę, że w przypadku użycia tej opcji, obcy proces może sterować sesją DOSEMU (np. powodując naciśnięcia klawiszy). Zatem ta opcja powinna być używana wyłącznie przez nakładki (takie jak kdos), które najpierw tworzą odpowiednie nazwane potoki, a następnie odpalają DOSEMU. Aby zmusić DOSEMU do zwracania poprzez potok znaczników uzgadniających informujących nakładkę o chwili uruchomienia lub zakończenia polecenia sterującego i czy zakończyło się ono pomyślnie można użyć specjalnego polecenia sterującego ( ack on ). Format takiego znakowania jest następujący
- SYN: <polecenie>
- <dowolny wynik polecenia>
- ACK: code=n
-
gdzie n jest równe 0 w przypadku pomyślnego zakończenia. Prostym terminalem sterujacym, mogącym służyć za przykład jest dołączony program dosctrl. Pobiera on dwa potoki jako argumenty i umożliwia podawanie poleceń sterujących, wśród których `help' jest najważniejszym;-) Należy zwrócić uwagę, że dosctrl nie odpala DOSEMU, trzeba to zrobić samodzielnie.
DYSKI TWARDE¶
DOSEMU obsługuje cztery metody udostępniania DOS-owi twardego dysku:
- 1.
- plik zawierający obraz dysku spoczywający w systemie plików Linuksa, emulujący twardy dysk.
- 2.
- bezpośredni dostęp do dysku z partycją DOS-ową przez plik urządzenia dysku (np. /dev/hda, /dev/hdb, /dev/sdX).
- 3.
- bezpośredni dostęp do partycji DOS-owej przez dostęp do urządzenia pojedynczej partycji (np. /dev/hda1, /dev/hdb2, /dev/sdxx). Należy uruchomić program mkpartition by DOSEMU mógł miec dostęp do partycji DOS-owych przez SPA.
- 4.
- dostęp do systemu plików Linuksa jako do dysku "sieciowego" przez użycie sterownika emufs.sys dostarczanego z programem DOSEMU w katalogu commands/emufs.sys.
Te motody są wyjaśnione dokładniej w pliku QuickStart.
Konfiguracja zasobów dyskowych DOSEMU jest określona w pliku /etc/dosemu.conf przed uruchomieniem programu. Zajrzyj do doc/README.txt.
DYSKIETKI¶
DOSEMU obsługuje dwie metody udostępniania DOS-owi dostępu do dyskietek:
- 1.
- obraz dyskietki w pliku spoczywającym w systemie plików Linuksa, emulujący napęd dyskietek.
- 2.
- bezpośredni dostęp do urządzenia reprezentującego napęd dyskietek (np. /dev/fd0, /dev/fd1).
Te opcje również są wyjaśnione dokładniej w pliku QuickStart.
Sposób korzystania przez DOSEMU z dyskietek określa się w pliku /etc/dosemu.conf przed uruchomieniem programu. DOSEMU.
EKRAN¶
DOSEMU może być uruchomiony na dowolnym typie terminala, jednak korzystanie z niego na konsoli Linuksa umożliwia wykorzystanie zwiększonej funkcjonalności oraz szybkości działania. Uruchamiając DOSEMU na konsoli, warto przeczytać opis opcji -c, -k, i -V w pliku QuickStart. Istnieje również skrócona wersja dokumentacji w pliku etc/config.dist, którą można skopiować do /etc/dosemu.conf i dopasować do własnych potrzeb.
Krótko mówąc, odpowiednio użyta konsola oraz właściwe opcje pozwalają uruchamiać programy DOS-owe z oryginalnym kolorami i czcionkami, bez problemów z odświeżaniem ekranu, które występują przy uruchamianiu na zwykłym terminalu.
KLAWIATURA¶
Uruchamiając DOSEMU na konsoli, warto też użyć bezpośredniego dostępu do klawiatury. Ten tryb pracy, uruchamiany opcją -k, pozwala użytkownikowi na dostęp do całej klawiatury. Dowolna kombinacja klawiszy CTRL, ALT i SHIFT może być użyta do generacji najdziwniejszych kombinacji wymaganych przez programy DOS-owe.
DRUKOWANIE¶
Obsługa drukowania przez BIOS jest emulowana poprzez pisanie do plików dosemulpt1, dosemulpt2, i dosemulpt3, odpowiadających DOS-owym oznaczeniom portów LPT1, LPT2 i LPT3. Wszytkie znaki wysyłane do LPTx będą przekierowane do plików dosemulptx w bieżącym katalogu.
OSTRZEŻENIE! DOSEMU nie zapisuje na dysk zawartości buforów dyskowych. Stan tych plików jest niezdefiniowany przed zakończeniem pracy emulatora. Przykro nam z powodu tej niedogodności.
KOMUNIKATY DIAGNOSTYCZNE¶
Emitowanie komunikatów diagnostycznych może być kontrolowane poprzez opcje linii poleceń bądź też w pliku konfiguracyjnym. Zajrzyj do dokumentacji w pliku config.dist zawartym w dystrybucji DOSEMU w podkatalogu z przykładami, aby znaleźć opis opcji diagnostycznych. W linii poleceń można określić, jakie kategorie komunikatów mają być emitowane przez dos. Składnia jest następująca: po opcji -D następują litery reprezentujące kategorie komunikatów. DOSEMU analizuje ciag znaków od lewej do prawej.
+ włącza następującą po nim
kategorię (stan domyślny)
- wyłącza następującą po nim
kategorię
a włącza lub wyłącza wszystkie kategorie
(zależnie od parametru)
0 wyłącza wszystkie kategorie
1-9 ustawia poziom diagnostyczny, im wyższy, tym więcej
komunikatów
# gdzie # jest literą z listy kategorii
włącza lub wyłącza daną kategorię
zależnie
od stanu przełącznika +/-.
Kategorie komunikatów:
d dysk R odczyt dysku
W zapis na dysk D przerwanie 21h
C cdrom v ekran
X obsługa X k klawiatura
i porty WE/WY s port szeregowy
m mysz # domyślne przerwania
p drukarka g ogólne
c konfiguracja w ostrzeżenia
h sprzęt I IPC
E EMS x XMS
M DPMI n sieć IPX
P Pkt-driver S dźwięk
r PIC T śledzenie WE/WY
Z BIOS PCI A sterownik ASPI
Q rozmieszczenie sterowników
Wszystkie kategorie występujące po znaku + aż do znaku - będą włączone. Wszystkie po znaku - aż do znaku + będą wyłączone. Znak a działa jak ciąg wszystkich kategorii, więc +a włącza wszystkie komunikaty, a -a je wyłącza. Znaki 0 i 1-9 też mają specjalne znaczenie: 0 wyłącza wszystkie komunikaty, a 1-9 je włącza ustawiając jednocześnie poziom diagnostyczny.
Na początku ciągu znaków kategorii zakłada się działanie znaku +. Niektóre kategorie, np. błędy nie mogą zostać wyłączone. Jeżeli standardowa diagnostyka nie została przekierowana, prawie wszystkie komunikaty idą do /dev/null.
Przykłady:
"-D+a-v" or "-D1-v" : wszystkie komunikaty oprócz
ekranu
"-D+kd" : domyślne + klawiatura i dysk
"-D0+RW" : tylko zapis i odczyt z dysku
Każda litera może się pojawić w dowolnym miejscu, nawet bezsensowne kombinacje, jak -D01-a-1+0, będą zaakceptowane, więc należy być ostrożnym. Niektóre opcje są standardowo włączone, a niektóre nie. Jest to zupełnie arbitralna decyzja autora i może to ulec zmianie w następnych wersjach. Aby mieć pewność, że opcja jest włączona, należy ją jawnie włączyć.
SPECJALNE KLAWISZE¶
W trybie bezpośredniego dostepu do klawiatury (opcja -k) DOSEMU reaguje na pewne kombinacje klawiszy.
- ctrl-scrlock = pokazuje wektor przerwania 0x32
- alt-scrlock = pokazuje rejestry vm86
- rshift-scrlock = generuje przerwanie 8 (timer)
- lshift-scrlock = generuje przerwanie 9 (klawiatura)
- ctrl-break = ctrl-break jak w DOS-ie.
- ctrl-alt-pgup = restart DOS. Ta opcja może być niebezpieczna.
- ctrl-alt-pgdn = koniec pracy.
Do przełączania na inną konsolę wirtualną należy Używać <LEFT CTRL>-<LEFT ALT>-<klawisz funkcyjny>.
PAMIĘƶ
Obsługa pamięci XMS w DOSEMU jest zgodna ze specyfikacją opracowaną przez firmy Lotus/Intel/Microsoft/AST w wersji 3.0. Zaimplementowano wszystkie funkcje oprócz 0x12 (realokacja bloku UMB).
Wszystkie funkcje UMB sa na razie niedopracowane. W kolejnej wersji zostanie to poprawione.
DOSEMU 0.97 obsługuje też standard EMS 4.0 oraz DPMI 0.9 (częściowo 1.0).
LOGI SYSTEMOWE¶
DOSEMU może logować wszystkie operacje poprzez email lub syslogd(8). Plik /etc/dosemu.loglevel zawiera informacje o tej funkcji. Przeczytaj też plik doc/README.txt.
AUTOR¶
DOSEMU (składający się z plików dos i libdosemu ) opiera się na wersji 0.4 oryginalnego programu napisanego przez Matthiasa Lautnera (nie znam jego aktualnego adresu).
Robert Sanders <gt8134b@prism.gatech.edu> sprawuje opiekę nad wersją DOSEMU, z którą ukazał się ten opis (strona podręcznika man). Przez cztery lata James B. MacLean <macleajb@ednet.ns.ca> bez chwili odpoczynku kierował rozwijaniem DOSEMU, implementacją DPMI (dzięki któremu można uruchomić m.in. Windows 3.1, dos4gw, djgpp) doprowadzając go niemal do wersji beta. Teraz program jest rozwijany przez Hansa Lermena <lermen@fgan.de>.
PROBLEMY¶
Jest ich zbyt dużo, by wszystkie wyliczyć, jednak dużo mniej się zamanifestowało.
Zgłaszaj problemy do autora. Chciałby on też wiedzieć, które programy DZIAŁAJĄ. Po prostu wyślij mu informację jakiego programu używasz, w jakiej wersji; co działa, a co nie itd.
DOSTĘPNOŚĆ¶
Najnowsza publiczna wersja DOSEMU może byc pobrana przez ftp z tsx-11.mit.edu w katalogu /pub/linux/ALPHA/dosemu Jeżeli chcesz mieć dostęp do wersji rozwojowych, dołącz do zespołu DOSEMU - przydadzą ci się nawet raporty o zauważonych błędach.
PLIKI¶
- /usr/bin/dos
- Główny plik programu.
- /usr/bin/xdos
- Wersja do X Window.
- $HOME/dosemu
- lokalny katalog DOSEMU użytkownika. Zostanie on po cichu utworzony, jeśli nie istnieje.
- $HOME/dosemu/tmp
- Wszystkie pliki tymczasowe są tworzone w tym katalogu, katalog /tmp nie jest już używany.
- /var/run/dosemu.*
- lub
- $HOME/dosemu/run
- Rozmaite pliki używane przez DOSEMU włączając potoki używane do śledzenia.
- lub
- $HOME/dosemu/lib
- Rozmaite pliki używane przez DOSEMU włącznie z obrazami dysków i plikami konfiguracyjnymi do obsługi tychże. W tym katalogu znajduje się również główny plik konfiguracyjny dla DOSEMU global.conf, który włącza /etc/dosemu.conf. Jeśli /etc/dosemu.users danemu użytkownikowi na to pozwala (o ile program nie jest suid root), to zamiast /var/lib/dosemu/* może być używany $HOME/dosemu/lib. Użytkownik może wówczas mieć swoją całkowicie własną konfigurację.
- /etc/dosemu.conf
- Główny plik konfiguracyjny DOSEMU, włączony w global.conf.
- /etc/dosemu.users
- Określa prawa dostępu do DOSEMU dla poszczególnych użytkowników i ustawia pewne żywotne opcje konfiguracyjne. Jest to jedyny plik konfiguracyjny o ustalonej lokalizacji, DOSEMU najpierw szuka /etc/dosemu.users a, gdy go nie znajdzie, /etc/dosemu/dosemu.users . Przy użyciu słowa kluczowego default_lib_dir= w dosemu.users można przenieść katalog systemowy /var/lib/dosemu gdziekolwiek. Więcej informacji na ten temat znajduje się w ./doc/README.txt.
- /etc/dosemu/dos.ini
- Plik konfiguracyjny IPX.
- doc/DPR
- Zespół DOSEMU: kto co robi przy programie.
- doc/DANG
- Pomoc w poprawianiu kodu źródłowego. DOSEMU.
- doc/README.*
- Pliki dokumentacyjne.
- QuickStart
- Szybkie wprowadzenie do DOSEMU.
- ChangeLog
- Zmiany w programie od ostatniej wersji.
- Lista pocztowa MS-DOS -
- wyślij list do linux-msdos@vger.rutgers.edu aby uzyskać więcej informacji.
ZOBACZ TAKŻE¶
mkfatimage16(1), mtools(1)
luty 2000 | Wersja 1.0.0 |